package tests;


import static org.junit.Assert.*;

import java.util.List;

import metier.Film;

import org.junit.Before;
import org.junit.Test;

import DAO.DAOFilm;
import DAO.DAOFilmJPA;
import DAO.DAOJPA;


public class testDAOFilm {

	private DAOFilm dao;
	private Film film,film2,film3;

	@Before
	public void init() {
		film = new Film("titreFilm",2014,20);
		film2 = new Film("testfilm",2014,20);
		film3 = new Film("titretest",2014,20);
		dao = DAOFilmJPA.getInstance();
		DAOJPA.viderBase();
	}
	
//	@Test
//	public void testFilm() {
//		// Pr�conditions
//		assertEquals(0,dao.getNombreFilms());	// rien dans la table
//		
//		dao.save(film);
//		
//		// Postconditions
//		assertEquals(1,dao.getNombreFilms());	// Un article est dans la table
//		assertNotEquals(-1, film.getId());	// Le code de l'auteur contient la cl� g�n�r�e par la BD
//		
//		// On v�rifie que l'auteur de la table est bien celui du test
//		Film	film2 = dao.get(film.getId());	
//		assertEquals(film, film2);			// C'est bien le m�me code
//		
//		// On supprime l'objet que l'on vient de consulter
//		dao.remove(film2);				
//		
//		assertEquals(0,dao.getNombreFilms());	// La table est bien vide
//		
//		// Attention, on ne peut rien faire pour auteur1. Il parait toujours manag�...
//	}
//	
//	@Test(expected=IllegalArgumentException.class)
//	public void testSaveException() {
//
//		dao.save(film);
//		assertEquals(1,dao.getNombreFilms());
//		// Ajouter le  meme film lance une exception
//		dao.save(film);
//
//	}	
//	
//	@Test(expected=IllegalArgumentException.class)
//	public void testRemoveException() {
//	
//		dao.save(film);
//		assertEquals(1,dao.getNombreFilms());
//
//		// Supprimer 2 fois le m�me auteur lance une exception 
//		dao.remove(film);
//		assertEquals(0,dao.getNombreFilms());
//		
//		dao.remove(film);
//	}
	
	
	@Test
	public void testSelectivLoad() {
		dao.save(film);
		dao.save(film2);
		dao.save(film3);
		assertEquals(3,dao.getNombreFilms());
		List<Film> liste=dao.loadAllWithName("test");
		for (int i=0;i<liste.size();i++)
			System.out.println(liste.get(i).getTitre());

	}

}